通过注解@RequestBody接收ajax提交过来的json数据,list<泛型对象> @RequestBody List<Student> students ,list转化对象报错
错误信息如下:
java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast to com.myspringmv.eg.controller.Student,
下面是相关代码:
1.ajax
<script type="text/javascript"> function test(){ var DataAry=[]; var data1={"name":"test"}; var data2={"name":"张三"}; DataAry.push(data1); DataAry.push(data2); var params =JSON.stringify(DataAry) alert(params); $.ajax({ type:"POST", url:"http://192.168.31.107:8080/json/student.html", dataType:"text", async : false, contentType:"application/json", data:params, success:function(data){ alert(data) ; } , error :function(data){ alert("error"); } }); } </script>
2. Student.java
public class Student { private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } }
3.controller
@RequestMapping(value = "student.html", method = RequestMethod.POST) public void Cate(HttpServletResponse response,@RequestBody List<Student> students) throws IOException{ for(int i=0;i<students.size();i++){ Student s=(Student)students.get(i) ; System.out.println("泛型学生姓名:"+s.getName()); }
执行 Student s=(Student)students.get(i) ; 语句时会出现错误java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast to com.myspringmv.eg.controller.Student,即list 转化student对象时出错。
查了一些资料,网上有说是不支持复杂的参数(List<对象>),在spring没有更新后续版本,应该确实是这样。
使用的是 Springmvc3.1.2. 所以需要升级springmvc版本。将springmvc3.1.2升级为springmvc4.3.0问题解决。
相关标签: